//package com.chenyun.message.websocket;
//
//import com.chenyun.common.vo.SessionUser;
//import com.google.common.collect.HashBiMap;
//import org.springframework.web.socket.WebSocketHandler;
//import org.springframework.web.socket.WebSocketSession;
//
//import java.io.Serializable;
//import java.util.concurrent.CopyOnWriteArraySet;
//
///**
// * 用户操作websocket帮助类
// *
// * @author: Lonni
// * @date: 2024/1/4 0004 15:13
// */
//public class PushUtil implements Serializable {
//    public static final PushUtil me = new PushUtil();
//    /**
//     * 存储处理器
//     */
//    private static final CopyOnWriteArraySet<WebSocketHandler> SOCKET_HANDLERS = new CopyOnWriteArraySet<>();
//    /**
//     * 存储sessionId和 sessionid和关系容器
//     * 可双向查找
//     */
//    private static final HashBiMap<String, SessionUser> SESSION_USER_HASH_BI_MAP = HashBiMap.create();
//    /**
//     * 存储sessionUser和session的关系
//     */
//    private static final HashBiMap<SessionUser, WebSocketSession> SOCKET_SESSION_HASH_BI_MAP = HashBiMap.create();
//
//
//    /**
//     * 设置handler
//     *
//     * @param handler
//     */
//    public void setSocketHandlers(WebSocketHandler handler) {
//        SOCKET_HANDLERS.add(handler);
//    }
//
//    /**
//     * 移除
//     *
//     * @param handler
//     */
//    public void removeSocketHandler(WebSocketHandler handler) {
//        SOCKET_HANDLERS.remove(handler);
//    }
//
//
//    /**
//     * 设置sessionId和sessionUser
//     *
//     * @param sessionId
//     * @param user
//     */
//    public void setSessionIdUser(String sessionId, SessionUser user) {
//        SESSION_USER_HASH_BI_MAP.forcePut(sessionId, user);
//    }
//
//
//    /**
//     * 更具sessionId查询用户
//     *
//     * @param sessionId
//     * @return
//     */
//    public SessionUser getSessionUser(String sessionId) {
//        return SESSION_USER_HASH_BI_MAP.get(sessionId);
//    }
//
//
//    /**
//     * 根据user查找sessionId
//     *
//     * @param user
//     * @return
//     */
//    public String getSessionIdByUser(SessionUser user) {
//        return SESSION_USER_HASH_BI_MAP.inverse().get(user);
//    }
//
//    public void setWebSocketSession(SessionUser user, WebSocketSession session) {
//        SOCKET_SESSION_HASH_BI_MAP.forcePut(user, session);
//    }
//
//
//    /**
//     * 保存会话
//     *
//     * @param sessionId
//     * @param user
//     * @param socketSession
//     */
//    public void putSession(String sessionId, SessionUser user, WebSocketSession socketSession) {
//        this.setSessionIdUser(sessionId, user);
//        this.setWebSocketSession(user, socketSession);
//    }
//
//
//    /**
//     * 获取链接数
//     *
//     * @return
//     */
//    public Integer getLinkCount() {
//        return SOCKET_HANDLERS.size();
//    }
//
//
//}
//
//
//
